<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    const p1 =new Promise((resolve, reject) => {
            try {
                console.log('请求A数据');
                throw new Error('A错误')
                setTimeout(() => {
                    resolve('请求A成功')
                }, 1000)
            } catch (e) {
                reject(e.message)
            }

        })
     const p2 =new Promise((resolve, reject) => {
            try {
                console.log('请求B数据');
                throw new Error('B错误')
                setTimeout(() => {
                    resolve('请求B成功')
                }, 2000)
            } catch (e) {
                reject(e.message)
            }
        })
    const p3 =new Promise((resolve, reject) => {
            try {
                console.log('请求C数据');
                throw new Error('C错误')
                setTimeout(() => {
                    resolve('请求C成功')
                }, 3000)
            } catch (e) {
                reject(e.message)
            }

        })
    /*  
        Promise的静态方法
        -Promise.all方法:
            -参数为iterable的数据类型，可迭代的对象 Array，Set，Map
            -所有promise实例的状态都为fulfilled时返回一个数租，这个数租的值为所有成功promise是的值组成的数租
            -当其中有一个promise实例发生错误时，返回rejected状态的值为错误信息的promise实例
        -Promise.allSettled方法:
            -无论其中的promise实例，状态是成功还是失败，都会返回一个全部promise的状态与值组成的对象所组成数租
        -Promise.race方法：、
            -类似赛跑
            -监听状态改变的最快的promise实例，无论fulfilled或rejected，race的返回值与该实例一致
        -Promise.any方法：
            -监听状态改变的最快的promise实例且状态为fulfilled，race的返回值与该实例一致
            -如果全部失败则返回rejected状态的promise实例，值为新的错误类型AggregateError: All promises were rejected
    */
    const result=Promise.all([p1,p2,p3])
    console.log(result);
  </script>
</body>

</html>